export default {
    // context => 和store实例有相同属性和方法的新对象
    addA_Async:function(context,payload){
      // 此写法只是启动了异步操作 => 放到WebAPi中 => 等任务队列通知主线程此任务可以执行 => 才会进入主线程执行 => 此写法确实时异步的,但是不知道异步任务什么时候结束
      console.log("context",context);
      // context.state
      // context.getters
      // context.commit()
      // context.dispatch()
      setTimeout(()=>{
        context.commit("addA",payload)
      },2000)
    },
    addAn_Async:function(context,payload){
      console.log("context",context);
      // context.state
      // context.getters
      // context.commit()
      // context.dispatch()
      setTimeout(()=>{
        context.commit("addAn",payload)
      },2000)
    },

    // p.then().then().then().then()


    // actions中的函数 默认返回Promise实例(pending状态) => (返回值是值类型) 等函数执行完毕之后,默认会变为fulfilled,函数的返回值会作为Promise实例的数据存储.
    
    // action中可以执行同步代码
    // addBoth_Async:function(context){
    //   console.log("context",context);
    //   var {commit} = context;
    //   commit("addA");
    //   commit("addB");
    //   return 1;
    // }

    // 如果函数的返回值是一个新的promise实例 =>等该Promise实例状态改变之后 => 继续向后传递
    addBoth_Async:function(context){

      // 此写法可以知道异步操作什么时候结束
      return new Promise(function(resolve){
        setTimeout(()=>{
          console.log("context",context);
          var {commit} = context;
          commit("addA");
          commit("addB");
          resolve(1)
        },2000)
      })
    }
    
  }